iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0

!!需要一個跨平臺的圖形界面工具!!

https://ithelp.ithome.com.tw/upload/images/20260916/201124701EbsNGQrcY.jpg

TL;DR

在跨平台桌面 GUI 的選擇中,JavaFX 並不是「追新」而是「務實」的選項。對我而言,它的吸引力在於:

  • 跨平台能力足夠:在 Windows 與 Linux 之間,桌面工具能保持一致的開發與使用體驗。
  • 工具鏈相對簡單:只要有 JDK、JavaFX SDK 和一個文字編輯器,就能開始開發,不需要把整個前端生態搬進來。
  • 穩定性與成熟度較高:JavaFX 是 Swing 的後繼者,並且在 Java 8 之後逐步改善了開發體驗;Scene Builder 與 TestFX 也讓 UI 工程與測試變得更順。
  • 打包與部署比 Electron 更容易控制:雖然不是完全「無痛」,但在 Java 生态中,jlink 與 jpackage 等工具已經大幅降低了發佈門檻。
  • JVM 生態相當有優勢:Java、Clojure、Kotlin、ABCL 等都能在同一個平台上共存,並能接入 Maven / Gradle 等成熟工具鏈。
  • 對我而言,最關鍵的點是:它剛好符合我正在尋找的「跨平台 + 穩定 + 低門檻 + 可擴充」的實作模式,而不是單純因為新潮而選擇它。

如果你正在評估「要不要選一個桌面 GUI 框架」而且不想被 Electron 的記憶體與打包大小綁住,JavaFX 是值得先做一次原型驗證的選擇。


為什麼我需要一個跨平台 GUI?

做為資訊科系畢業,現職軟體開發工程師,相對於其他背景,更深知軟體工具對於資訊處理與生活的幫助。

作爲Windows、Linux兩棲的工程師,當然會希望使用的工具具有跨平臺的特性。上班使用Windows,在家主要使用Linux。因此長期來說Python豐富的生態與跨平臺特性一直是我的首選。

CPython本身自帶tk(tkinter)工具包,它確實是一個跨平臺的圖形視窗框架,但太過簡陋。

也曾經使用過PySide6,並且有Qt Creator可以輔助圖形化界面開發。並且在最後也可以透過PyInstaller打包成沒有Python環境也可以直接拿來使用的可攜式檔案。不過這套方案也有一些痛點,包含通常打包大小會很大。
(【用Keycloak學習身份驗證與授權32】Device Code中用來學習驗證Device Code流程概念的,就是使用PySide6)
關於PySide6的使用經驗,就結果來說,並不是讓我到太滿意。並且畢竟都已經玩過了,總想玩點點新的。

為什麼不是 Electron ?

那麼Electron.JS呢?現在成堆的應用......
我也玩過,畢竟剛開始工作那個時候就是在寫前端Angular,對於Vue也是略懂略懂,這種直接將網頁當成UI的做法自然也進入到我的視野。只是缺點也很明顯,除了打包成品肥大外,運行使用的記憶體.......看看電腦現在閱讀使用的瀏覽器使用情況可想一二。

圖片:電腦裏到底有多少瀏覽器

為什麼我開始看 JavaFX?

那麼為什麼這次會想接觸JavaFX?

基於幾種需求:

  • 環境準備可以很簡單。
  • 穩定。
  • 已有部分熟悉。

先是已有部分「熟悉」這點。在大學就學過JAVA,程式語言來說對我不陌生。視窗程式開發除了前述提到的,也有VB6的經驗。所以熟悉程度不會是入門的一大門檻。我更曾經用過swing開發過JAVA計算機

接著是「穩定」。JavaFX並不是什麼新玩具,是swing的後繼者,並且在JAVA 8以後看起來更好用了。從官網明瞭的兩個工具:可視化輔助開發的Scene Builder,以及測試框架的TestFX(我尚不確定是不是可用於e2e測試),可認爲在開發工具、測試生態是足夠的。

最後是「簡單的環境準備」。開發環境可以只需要JDK、JavaFX的SDK和順手的文字編輯器即可。「簡單的環境準備」不只是開發環境,運行的使用環境也是一樣,雖然不像JAVA一開始的理想,「開發一次,到處運行」只需要準備好JRE環境就好,但是隨者jpackage、jlink等工具,要打包成可以直接執行的,甚至瘦過身的JRE環境也變的容易。

JavaFX 的實際優勢:成熟、簡單、可擴充

還可進一步補充的是「豐富的JVM生態」。基於JVM的豐富生態,光相關語言就包含Clojure、Kotlin、ABCL。網際網路上JAVA相關的可用套件也是相當豐富,有工程可用的Maven、Gradle等生態。

至於其實最最最重要的原因:它放在我的想玩清單已經很久了。我很喜歡Common Lisp這個語言,雖然很小眾,但很強大。ABCL是在JVM環境的Common Lisp一個實現,可以與JAVA生態進行交互。而在JVM裡出名的GUI框架就是JavaFX。

偷偷告訴你,下一篇會怎麼走

如果你已經跟我一樣,對 JavaFX 這個方向有點興趣,那後面的系列內容大概會這樣展開:

先從「怎樣安裝 JDK 開發環境」開始,確認你的環境能順利跑起 Java;接著會進入「建立最小的 JavaFX 專案(Hello JavaFX)」這一步,讓我們先從最小視窗開始,看 JavaFX 的基本工作流;之後再帶到「從 ABCL 使用 JavaFX 的最小範例(Hello abclFX)」這個部分,看看 Common Lisp 和 JVM 生態如何一起玩;另外我會整理我對各個 GUI 框架的認識與比較,看看 JavaFX、PySide6、Electron 之間的差異究竟在哪裡。


上一篇
JavaFX 學習路線:從 ABCL 入門到 CalcFX 實作
下一篇
lesson -2: 跨平臺GUI框架有什麼替代品?
系列文
玩轉ABCL Lisp!用奇怪偏門的方式學習JavaFX7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言